DOUBLE PRECISION function form1A(x)
	implicit none
	DOUBLE PRECISION x
	!form1A = ((x * (2.1 - 0.5 * x)**0.5) / ((1 - x) * (1.1 - 0.5 * x)**0.5)) - 3.69
	form1A = ((x * (2.1 - 0.5 * x)**0.5) - 3.69 * ((1 - x) * (1.1 - 0.5 * x)**0.5))
END

DOUBLE PRECISION function form1B(x)
	implicit none
	DOUBLE PRECISION x
	form1B = tan(x) - x + 1
END

DOUBLE PRECISION function form1C(x)
	implicit none
	DOUBLE PRECISION x
	form1C = (0.5*exp(x/3))-sin(x)
END

DOUBLE PRECISION function contoh(x)
	implicit none
	DOUBLE PRECISION x, t
	t = 1
	contoh = exp(t)**x-5*x**2
END

DOUBLE PRECISION function hitung_epsilon_mesin()
	implicit none
	DOUBLE PRECISION eps
	eps = 1
	do while ((eps+1).GT.1)
		eps = eps/2
	end do
	hitung_epsilon_mesin = eps * 2
END

DOUBLE PRECISION function form1D_x(x, y)
	implicit none
	DOUBLE PRECISION x, y
	form1D_x = sqrt(((2*(y**2))+1)/3)
END

DOUBLE PRECISION function form1D_y(x, y)
	implicit none
	DOUBLE PRECISION x, y
	form1D_y = sqrt(10-((x-1)**2)) - 1
END

subroutine form1D_x_proc(x, y, f, dx, dy)
	implicit none
	DOUBLE PRECISION x, y, f, dx, dy
	f = 3 * (x**2) - 2 * (y**2) - 1
	dx = 6 * x
	dy = -4 * y
END

subroutine form1D_y_proc(x, y, f, dx, dy)
	implicit none
	DOUBLE PRECISION x, y, f, dx, dy
	f = (x**2) - 2 * x + (y**2) + 2 * y - 8
	dx = (2 * x) - 2
	dy = (2 * y) + 2
END 